/**
 ***********************************************************************************************************
 * 
 ***********************************************************************************************************
 * @file RBMemoryTracker.h
 ***********************************************************************************************************/

#ifndef __RBMEMORYTRACKER_H__
#define __RBMEMORYTRACKER_H__

#ifdef  HEADER_ONCE
#pragma HEADER_ONCE
#endif

#ifdef  HEADER_MSG
#pragma HEADER_MSG(RBMemoryTracker.h)
#endif

/***********************************************************************************************************
 * Includes
 ***********************************************************************************************************/
#include <hash_set>

/***********************************************************************************************************
 * Forward declarations
 ***********************************************************************************************************/

/***********************************************************************************************************
 * Classes
 ***********************************************************************************************************/

class RBMemoryTracker
{
public:
                    RBMemoryTracker     ();
                   ~RBMemoryTracker     ();

    void            TrackMemory         (void* pMemory);
    bool            IsMemoryTracked     (void* pMemory, bool bRemoveTracking);

    const char*     File;
    int             Line;
    const char*     Function;
    stdext::hash_set<void*> m_sAllocatedData;

};

/***********************************************************************************************************/

#endif // __RBMEMORYTRACKER_H__
